/**
 * 给定01串记作S，可以进行交换与删除操作，操作过后的串记作T
 * 要使得T的所有字母与S对应位置均不一样
 * 问最少要几个删除操作
 * 把S中01的数量记下来
 * 然后从左到右依次用掉
 * 第一个不能满足的位置及其后续位置都要删掉
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using Real = long double;
using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vi>;

string S;

int proc(){
    int cnt[2] = {0, 0};
    for(auto c : S) ++cnt[c - '0'];
    if(cnt[0] == cnt[1]) return 0;

    int n = S.length();
    for(int i=0;i<n;++i){
        auto t = S[i] - '0' ^ 1;
        if(cnt[t] == 0){
            return n - i;
        }
        --cnt[t];
    }
    return 0;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--){
        cin >> S;
        cout << proc() << "\n";
    }
    return 0;
}